<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>管理系统</title>
    <!-- import CSS -->
    <link rel="stylesheet" href="https://cdn.staticfile.org/element-ui/2.15.9/theme-chalk/index.css">
    <!-- import Vue before Element -->
    <script src="https://cdn.staticfile.org/vue/2.6.14/vue.min.js"></script>
    <!-- 引入axios -->
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.min.js"></script>
    <!-- import JavaScript -->
    <script src="https://cdn.staticfile.org/element-ui/2.15.9/index.min.js"></script>
</head>
<body>
<div id="app">
    <el-container>
        <el-header style="background-color: #0096dc">
            <h1 style="font-size: 22px;color: white;font-family: 楷体">
                CoolShark商城管理系统
                <span v-if="user.nickname!=null" style="float: right;font-size: 15px;">
                    欢迎{{user.nickname}}回来
                    <a href="JavaScript:void(0)" @click="logout()" style="text-decoration: none">退出登录</a>
                </span>
            </h1>
        </el-header>
        <el-container>
            <!--style="overflow: hidden"去除滚动条-->
            <el-aside width="200px" style="overflow: hidden">
                <el-menu @select="handleSelect">
                    <el-submenu index="1">
                        <template slot="title">
                            <i class="el-icon-s-flag "></i>
                            <span>分类管理</span>
                        </template>
                        <el-menu-item index="1-1">分类列表</el-menu-item>
                        <el-menu-item index="1-2">添加分类</el-menu-item>
                    </el-submenu>
                    <el-submenu index="2">
                        <template slot="title">
                            <i class="el-icon-picture"></i>
                            <span>轮播图管理</span>
                        </template>
                        <el-menu-item index="2-1">轮播图列表</el-menu-item>
                        <el-menu-item index="2-2">添加轮播图</el-menu-item>
                    </el-submenu>
                    <el-submenu index="3">
                        <template slot="title">
                            <i class="el-icon-shopping-cart-2"></i>
                            <span>商品管理</span>
                        </template>
                        <el-menu-item index="3-1">商品列表</el-menu-item>
                        <el-menu-item index="3-2">添加商品</el-menu-item>
                    </el-submenu>
                </el-menu>
            </el-aside>
            <el-main>
                <!-- 分类表格开始 -->
                <el-table v-if="currentIndex=='1-1'" :data="categoryArr">
                    <!--显示序号-->
                    <el-table-column type="index" label="编号"></el-table-column>
                    <!--分类名称-->
                    <el-table-column prop="name" label="分类名称">

                    </el-table-column>
                    <!--操作列-->
                    <el-table-column label="操作" width="200">
                        <!--自定义列必须添加template标签以及slot-scope
                        scope是定义一个变量名称,此变量里面装着当前行的相关信息
                        scope.$index 当前行对应的下标
                        scope.row  当前行对应数组的对象
                        -->
                        <template slot-scope="scope">
                            <el-button
                                    size="mini"
                                    type="success"
                                    @click="categoryUpdate(scope.$index,scope.row)">修改
                            </el-button>
                            <el-button
                                    size="mini"
                                    type="danger"
                                    @click="categoryDelete(scope.$index, scope.row)">删除
                            </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <!-- 分类表格结束 -->
                <!-- 轮播图开始 -->
                <el-table v-if="currentIndex=='2-1'" :data="bannerArr">
                    <!--显示序号-->
                    <el-table-column type="index" label="编号"></el-table-column>
                    <!--分类名称-->
                    <el-table-column prop="name" label="轮播图">
                        <!--如果表格的显示列的内容不是来自于数组里面的对象的属性,而是显示一些
                        其他标签组成的内容时需要添加自定义列
                        -->
                        <!--自定义列必须使用template标签-->
                        <template slot-scope="scope">
                            <img :src="scope.row.url" width="200">
                        </template>
                    </el-table-column>
                    <!--操作列-->
                    <el-table-column label="操作" width="200">
                        <!--自定义列必须添加template标签以及slot-scope
                        scope是定义一个变量名称,此变量里面装着当前行的相关信息
                        scope.$index 当前行对应的下标
                        scope.row  当前行对应数组的对象
                        -->
                        <template slot-scope="scope">
                            <el-button
                                    size="mini"
                                    type="success"
                                    @click="bannerUpdate(scope.$index,scope.row)">修改
                            </el-button>
                            <el-button
                                    size="mini"
                                    type="danger"
                                    @click="bannerDelete(scope.$index, scope.row)">删除
                            </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <!-- 轮播图结束 -->
                <!-- 商品表格开始 -->
                <el-table v-type
                          v-if="currentIndex=='3-1'" :data="productArr">
                    <!--显示序号-->
                    <el-table-column type="index" label="编号"></el-table-column>
                    <el-table-column prop="title" width="200px" label="商品名称"></el-table-column>
                    <el-table-column prop="price" label="商品价格"></el-table-column>
                    <el-table-column prop="oldPrice" label="商品原价"></el-table-column>
                    <el-table-column prop="saleCount" label="商品销量"></el-table-column>
                    <!--分类名称-->
                    <el-table-column prop="name" label="商品图片">
                        <!--如果表格的显示列的内容不是来自于数组里面的对象的属性,而是显示一些
                        其他标签组成的内容时需要添加自定义列
                        -->
                        <!--自定义列必须使用template标签-->
                        <template slot-scope="scope">
                            <img :src="scope.row.url" width="200">
                        </template>
                    </el-table-column>
                    <!--操作列-->
                    <el-table-column label="操作" width="200">
                        <!--自定义列必须添加template标签以及slot-scope
                        scope是定义一个变量名称,此变量里面装着当前行的相关信息
                        scope.$index 当前行对应的下标
                        scope.row  当前行对应数组的对象
                        -->
                        <template slot-scope="scope">
                            <el-button
                                    size="mini"
                                    type="success"
                                    @click="productUpdate(scope.$index,scope.row)">修改
                            </el-button>
                            <el-button
                                    size="mini"
                                    type="danger"
                                    @click="productDelete(scope.$index, scope.row)">删除
                            </el-button>
                        </template>
                    </el-table-column>
                </el-table>
                <!-- 商品表格结束 -->
            </el-main>
        </el-container>
    </el-container>
</div>
</body>
<script>
    let v = new Vue({
        el: '#app',
        data: function () {
            return {
                currentIndex: "1-1",
                categoryArr: [],
                bannerArr: [],
                productArr: [],
                user: []
            }
        },
        methods: {
            logout() {
                if (confirm("您确定退出登录吗")) {
                    // 发出退出登录的请求
                    axios.get("/logout").then(function () {
                        location.href = "/"
                    })
                }
            },
            productUpdate(i, p) {
                // 跳转到修改商品的页面
                location.href = "/updateProduct.html?id=" + p.id;
            },
            bannerUpdate(i, b) {
                location.href = "/updateBanner.html?id=" + b.id;
            },
            categoryUpdate(i, c) {
                // i是下标 c是要修改的分类对象
                let name = prompt("请输入新的分类名称");
                // 判断是否点击了取消
                if (name == null) {
                    return;
                } else if (name.trim() == "") {
                    // 判断是否输入内容
                    v.$message.error("分类名称不能为空!")
                    return;
                }
                // 发出修改请求不新的分类名称的id传递过去
                let category = {id: c.id, name: name};
                axios.post("/category/update", category).then(function (response) {
                    // 把数组里面的分类对象名称修改掉,这样页面才会跟着改变
                    c.name = name;
                })
            },
            // 使页面和侧边栏对应
            handleSelect(key, keyPath) {
                if (key == '1-2') {
                    let name = prompt("请输入分类名称")
                    // 判断名字如果是null 代表用户点击了取消
                    if (name == null) {
                        return;
                    }
                    if (name.trim() == "") {
                        v.$message.error("分类名不能为空");
                        return;
                    }
                    // 发送添加请求分类
                    axios.get("/category/insert?name=" + name).then(function (response) {
                        // 为了让页面显示出新的分类,服务器添加成功之后相应所有的分类信息
                        v.categoryArr = response.data;
                    })
                    v.$message.success("添加成功")
                } else if (key == '2-2') {
                    // v.$message("添加轮播图")
                    location.href = "insertBanner.html"
                } else if (key == '3-2') {
                    // v.$message("添加商品")
                    location.href = "insertProduct.html"
                } else {
                    v.currentIndex = key;
                }
            },
            categoryDelete(i, category) {
                if (confirm("您确定删除分类吗?")) {
                    // 发出删除请求
                    axios.get("/category/delete?id=" + category.id).then(function () {
                        // 删除成功之后从数组中删除数据,这样就可以实现页面跟着改变了
                        v.categoryArr.splice(i, 1);
                        v.$message("删除了" + category.name);
                    })
                }

            },
            bannerDelete(i, banner) {
                if (confirm("您确认删除此轮播图吗?")) {
                    // 发出删除请求
                    axios.get("/banner/delete?id=" + banner.id).then(function () {
                        // 删除成功之后从数组中删除数据,这样就可以实现页面跟着改变了
                        v.bannerArr.splice(i, 1)
                        v.$message.success("删除成功!")
                    })
                }
            },
            productDelete(i, product) {
                if (confirm("您确定要删除此商品吗?")) {
                    axios.get("/product/delete?id=" + product.id).then(function () {
                        v.productArr.splice(i, 1)
                        v.$message.success("删除成功!")
                    })
                }
            }
        },
        created: function () {
            // 发请求获取所有分类
            axios.get("/category/select").then(function (response) {
                v.categoryArr = response.data;
            })

            // 发请求获取所有的轮播图信息
            axios.get("/banner/select").then(function (response) {
                v.bannerArr = response.data;
            })

            // 获取所有商品数据
            axios.get("/product/select").then(function (response) {
                v.productArr = response.data;
            })

            // 发请求获取当前登录的用户对象
            axios.get("/currentUser").then(function (response) {
                v.user = response.data;
                if (v.user == "") {
                    alert("请先登录!")
                    location.href = "/login.html";
                }
            })
        }
    })
</script>
</html>